home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The CICA Windows Explosion!
/
The CICA Windows Explosion! - Disc 1.iso
/
util
/
printps.zip
/
PRINTPS.C
< prev
next >
Wrap
C/C++ Source or Header
|
1994-01-19
|
4KB
|
153 lines
#define lineentete 815
#define firstline 795
#define __MSC /* For Borland C++ */
#include <bios.h>
#include <stdio.h>
#include <string.h>
void PrintProlog() ;
void PrintEnd() ;
void SelectCourier (int corps) ;
void SelectTimes (int corps) ;
void SelectHelv (int corps) ;
void PrintTextAt(int x,int y,unsigned char * text) ;
void PrintPage();
FILE * fsort ;
/*=========================================================================*/
/* lit_chaine */
/*=========================================================================*/
/* lit_chaine lit la chaine de caractères buf dans le fichier */
/* *stream. la chaine est terminée lorsque l'on rencontre un séparateur */
/* fin de ligne ou fin de fichier */
char lit_chaine (FILE * stream,char * buf,int lgMax)
{
char c;
int pos=0;
do
{
c=getc(stream) ;
if (c != 10) if ((pos++)<lgMax) *(buf++) = c ;
} while ((c!='\0') && (c!='\n') && (c!=EOF));
*buf = '\0';
return c ;
}
int env_car_printer (char c)
{
int status;
/* status :
bit meaning if TRUE
0 Printer timed out
1 Not used
2 Not used
3 I/O error
4 Printer selected
5 Out of paper
6 Acknowledge
7 Printer not busy */
if (c!='\n')
status=_bios_printer(_PRINTER_WRITE,0,c) & 255;
else
{
status = _bios_printer(_PRINTER_WRITE,0,13) & 255;
status = _bios_printer(_PRINTER_WRITE,0,10) & 255;
}
if (status != 0) printf("STATUS %d",status) ;
return status ;
}
void SendText(char *pText)
{
fputs (pText,fsort) ;
/* while ((*pText) != '\0')
(void) env_car_printer(*(pText++)) ; */
}
void EcrEntete(char * text,int nopage)
{
SelectTimes (11) ;
PrintTextAt (20,lineentete,text) ;
if (nopage != -1)
{
char txtpage[10] ;
sprintf (txtpage,"page n° %d",nopage) ;
PrintTextAt(500,lineentete,txtpage) ;
}
SelectCourier (10) ;
}
void PrintDoc(char * szFileName)
{
char ligne[512] ;
int nopage = 1 ;
FILE * FicAscii ;
unsigned int nl = firstline ;
if ((FicAscii = fopen(szFileName,"rt")) == NULL)
{
puts ("Fichier impossible à ouvrir") ;
return ;
}
PrintProlog () ;
SelectCourier (10) ;
while (lit_chaine(FicAscii,ligne,100) != EOF)
{
PrintTextAt (20,nl-=11,ligne) ;
if (nl < 30)
{
EcrEntete (szFileName,nopage ++) ;
PrintPage() ;
nl = firstline ;
}
}
if (nopage == 1) EcrEntete(szFileName,-1) ;
else EcrEntete(szFileName,nopage) ;
PrintPage () ;
PrintEnd ();
}
void ConvMaj (char * dest,char * src,int nmax)
{
int i = 0 ;
while (*src != '\0' && i < nmax)
{
if (*src >= 'a' && *src <= 'z')
*(dest++) = (*(src++)) - 32 ;
else *(dest++) = (*(src++)) ;
i ++ ;
}
*dest = '\0' ;
}
main(int argc,char *argv[])
{
char fileName [80] ;
puts ("PrintPS 1.01 (C) 1991 Gilles Vollant\n");
if (argc < 2)
{
puts("Syntaxe : PrintPS filename.ext [filesort.eps]\n") ;
puts(" filename.ext étant le fichier à imprimer,\n" \
"et filesort.eps un éventuel fichier de sortie " \
"(PRN est utilise) par défaut.\n") ;
return 1 ;
}
if (argc == 2) fsort = fopen("prn.eps","w") ;
else fsort = fopen(argv[2],"w") ;
ConvMaj (fileName,argv[1],50) ;
PrintDoc(fileName) ;
fclose(fsort) ;
return 0 ;
}